/*
    定义日志消息类，进行日志中间信息的存储：
        1. 日志的输出时间：用于过滤日志输出的时间
        2. 日志等级：用于进行日志过滤分析
        3. 源文件名称
        4. 源代码行号：用于定位出现错误的代码位置
        5. 线程ID：用于过滤出错的线程
        6. 日志主体消息
        7. 日志器名称：当前支持多日志器的同时使用
*/

#ifndef __M_MESSAGE_H__
#define __M_MESSAGE_H__

#include <iostream>
#include <string>
#include <thread>
#include <ctime>
#include "level.hpp"
#include "util.hpp"

namespace Log
{
    struct LogMsg
    {
        time_t _ctime;              // 日志产生的时间戳
        LogLevel::Value _level;     // 日志等级
        size_t _line;               // 源代码行号
        std::thread::id _tid;        // 线程ID
        std::string _file;          // 源文件名
        std::string _logger;        // 日志器名称
        std::string _playload;      // 有效消息数据

        LogMsg(const LogLevel::Value level,
               const size_t line,
               const std::string file,
               const std::string logger,
               const std::string playload)
               :_ctime(util::Data::GetNowTime())
               ,_level(level)
               ,_line(line)
               ,_tid(std::this_thread::get_id())
               ,_file(file)
               ,_logger(logger)
               ,_playload(playload)
               {}
    };
}

#endif